package tech.yunjing.train.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import tech.yunjing.train.service.impl.ServiceImp;
import tech.yunjing.train.util.JsonResult;


/**
 * 这个类用于红包的增加删除修改和查找
 * 访问对应路径返回对应的数据
 * Created by 刘飞 on 2017-6-8.
 */
@RequestMapping("redpacket")
@RestController
public class RedPageContorller extends BaseController {
    @Autowired
    private ServiceImp serviceImp;


    /**
     *
     * @param redPacketName 红包名
     * @param smallRedPacketNumber 红包金额
     * @param redPacketAmount  红包数量
     * @param userAccount 用户的账号
     * @param passWord 账户的密码
     * @return  mysql中增加红包 redis中增加小红包 异常时的异常信息
     * 正常时 小红包的id和小红包的金额
     */
    @RequestMapping(value = "add",method = RequestMethod.POST)
    public JsonResult addRedPacketAndSmallRedPacket(String redPacketName, Integer smallRedPacketNumber, Double redPacketAmount, String userAccount, String passWord){
        return serviceImp.addRedPage(redPacketName,smallRedPacketNumber,redPacketAmount,userAccount,passWord);
    }

    /**
     *
     * @param redPacketName 红包名
     * @param redPacketAmount 红包金额
     * @param smallRedPacketNumber  红包数量
     * @param userAccount 用户的账号
     * @param passWord 账户的密码
     * @return 将mysql中的红包根据接收的数值修改
     * 将redis中的小红包删除
     * 失败时获取到异常信息 成功时获取小红包的金额和id
     */
    @RequestMapping(value = "update",method = RequestMethod.POST)
    public JsonResult updateRedPack(String redPacketName, Integer smallRedPacketNumber, Double redPacketAmount, String userAccount, String passWord)  {
        return serviceImp.upDatePage(redPacketName,smallRedPacketNumber,redPacketAmount,userAccount,passWord);
    }

    /**
     * 逻辑删除 将大红包的状态修改为1 小红包的状态修改为2
     * @param redPacketName 大红包的名字
     * @param userAccount 用户的账号
     * 返回异常信息 或者 红包中剩余的金额。a
     */
    @RequestMapping(value = "delete", method = RequestMethod.POST)
    public JsonResult delete(String redPacketName, String userAccount, String passWord){
        return serviceImp.removeRedPacket(redPacketName,userAccount,passWord);
    }

    /**
     *
     * @param redPacketName 红包名称
     * @param userAccount 用户的账号
     * @return   根据红包名称和红包状态来查找红包
     * 只有在状态为0并且名称正确时 返回红包对象
     */
    @RequestMapping(value = "findone",method = RequestMethod.GET)
    public JsonResult findRedPacket(String redPacketName, String userAccount){
        return serviceImp.findRedPacket(redPacketName,userAccount);
    }
}







